package com.efast.cafe.portal.dao.api;

import java.util.List;

import org.apache.ibatis.annotations.Param;
import com.efast.cafe.portal.bean.api.PortalApiServiceBean;
import com.efast.cafe.portal.bean.api.PortalApiServiceDto;
import com.efast.cafe.portal.bean.api.PortalApiServiceQueryBean;

/**
 * <p>
 * 接口
 * </p>
 * <p>
 * Table: portal_api_service - 服务定义
 * </p>
 *
 * @since ${.now}
 */

public interface PortalApiServiceDao {

	/**
	 * 插入一个service基本信息
	 * 
	 * @param portalApiService
	 * @return void
	 */
	public void insertApiService(PortalApiServiceBean portalApiServiceBean);

	/**
	 * 修改service基本信息
	 * 
	 * @param portalApiService
	 * @return void
	 */
	// @SaveOrUpdateOrDelControl(companyCodeControl = false)
	public void updateApiService(PortalApiServiceBean portalApiServiceBean);

	/**
	 * 
	 * @param id
	 * @param user
	 * @param user
	 * @return void
	 * @Author Administrator
	 * @Date 2017年8月14日
	 */
	// @SaveOrUpdateOrDelControl(companyCodeControl = false)
	public void deleteApiService(@Param("id") Integer id, @Param("user") String user);

	/**
	 * 
	 * @param id
	 * @return PortalApiServiceDetailBean
	 * @Author Administrator
	 * @Date 2017年8月14日
	 */
	public PortalApiServiceBean queryPortalApiServiceDetail(@Param("id")Integer id);

	/**
	 * 批量发布服务
	 * 
	 * @param portalApiServiceList
	 * @Return void
	 * @Author Administrator
	 * @Date 2017年8月14日
	 */
	public void publishPortalApiServiceList(@Param("list") List<PortalApiServiceBean> portalApiServiceList,
			@Param("user") String user);

	/**
	 * 复制选中的服务  service
	 * 
	 * @param portalApiService
	 * @return void
	 * @Author Administrator
	 * @Date 2017年8月15日
	 */
	public void copyPortalApiService(@Param("list") List<PortalApiServiceBean> portalApiServiceList,
			@Param("user") String user);

	/**
	 * 复制模块下所有的service
	 * 
	 * @param moduleId
	 * @param user
	 * @return void
	 * @Author Administrator
	 * @Date 2017年8月28日
	 */
	public void copyPortalApiServicesByModule(@Param("list") Integer moduleId, @Param("user") String user);

	/**
	 * 查询模块下所有服务
	 * @param moduleId
	 * @param user
	 * @return void
	 * @Author Administrator
	 * @Date 2017年8月28日
	 */
	public List<Integer> queryPortalApiServiceIdsByModuleId(@Param("moduleId") Integer moduleId);

	/**
	 * 查询未勾选升级的系统id
	 * 
	 * @param portalApiServiceList
	 * @return List<Integer>
	 * @Author Administrator
	 * @Date 2017年8月24日
	 */
	public List<Integer> queryPortalApiServiceIdsNotUpgrade(
			@Param("list") List<PortalApiServiceBean> portalApiServiceList, @Param("moduleId") Integer moduleId);

	/**
	 * 查询符合条件的service列表,返回最新版本的服务
	 * 
	 * @param queryBean
	 * @return List<PortalApiServiceDto>
	 * @Author Administrator
	 * @Date 2017年8月19日
	 */
	// @PaginationControl(true)
	public List<PortalApiServiceDto> queryPortalApiServiceList(PortalApiServiceQueryBean queryBean);

	/**
	 * 查询符合条件的service条数
	 * 
	 * @param queryBean
	 * @return int
	 * @Author Administrator
	 * @Date 2017年8月19日
	 */
	public int queryPortalApiServiceListCount(PortalApiServiceQueryBean queryBean);

	/**
	 * 查询服务的所有版本
	 * 
	 * @param projectId
	 * @param systemId
	 * @param moduleId
	 * @param serviceId
	 * @param status
	 *            null 则返回所有版本,1返回所有状态为1的版本
	 * @return List<PortalApiServiceDto>
	 * @Author Administrator
	 * @Date 2017年8月21日
	 */
	public List<PortalApiServiceDto> queryPortalApiServiceVersions(@Param("moduleId") Integer moduleId,
			@Param("serviceId") Integer serviceId, @Param("status") Integer status);

	/**
	 * 查看service版本是否重复
	 * 
	 * @param portalApiServiceBean
	 * @return int
	 * @Author Administrator
	 * @Date 2017年8月22日
	 */
	public int apiServiceVersionsIsExist(PortalApiServiceBean portalApiServiceBean);
	/**
	 * 查看服务版本是否存在
	 *@param portalApiServiceBean
	 *@return 
	 *int
	 *@Author  Administrator
	 *@Date 2017年12月7日
	 */
	public int apiServiceIndentifierIsExist(PortalApiServiceBean portalApiServiceBean);
	
	/**
	 * 通过uri查询service的全部信息
	 * @param serviceUri
	 * @return
	 */
	public List<PortalApiServiceBean> queryServiceByUri(@Param("serviceUri")String serviceUri,@Param("systemVer")String systemVer,@Param("systemInd")String systemInd,@Param("indentifier")String indentifier);

 }